<?php

/**
 * 获取所有目录名
 * @param string $path 响应状态码
 * @param return $data 返回目录名数组
 */
function getCatalog($path = CMS_VIEW_PATH)
{
    $dir = $path;
    if (is_dir($dir)) {
        if ($dh = opendir($dir)) {
            $i = 0;
            while (($file = readdir($dh)) !== false) {
                if (strstr($file, '.') == '') {
                    $tem[$i] = $file;
                    $i++;
                }
            }
            closedir($dh);
        }
    }
    return $tem;
}

/**
 * 获取指定目录下所有文件名（不包括二级）
 * @param string $_path 目录路径
 * @param string $_suffix 文件后缀
 * @return 返回目录下所有文件名
 */
function getFileName($_path, $_suffix = '.html')
{
    //指定文件夹路径
    $handler = opendir($_path);
    $i = 0;
    //遍历文件名
    while (($filename = readdir($handler)) !== false) {
        //略过目录下的名字为'.'和'..'的文件
        if ($filename != '.' && $filename != '..') {
            //获取'.'最后出现的位置
            $d = strrpos($filename, '.');
            //筛选掉文件夹
            if ($d > 0) {
                //获取文件名
                $fname = substr($filename, 0, $d);
                //获取文件后缀
                $suffix = substr($filename, $d);
                //判断是否为指定文件后缀
                if ($suffix == $_suffix) {
                    //文件名
                    $data[$i]['val'] = iconv("GB2312", "UTF-8", $fname);
                    //文件名带后缀
                    $data[$i]['title'] = iconv("GB2312", "UTF-8", $filename);
                    $i++;
                }
            }
        }
    }
    closedir($handler);
    return $data;
}

/**
 * 多维数组排序
 * @param string $data 排序数组
 * @param string $key 键值
 * @param string $sort 排序类型
 * @return 返回目录下所有文件名
 */
function array_many_sort($data = [], $key = 'id', $sort = SORT_DESC)
{
    $sort_arr = [];
    foreach ($data as $k => $value) {
        $sort_arr[] = $value[$key];
    }
    array_multisort($sort_arr, $sort, $data);
    return $data;
}


/**
 * 获取指定目录大小
 * @param string $path 目录路径
 * @return 返回目录大小
 */
function getDirSize($path)
{
    // 初始化文件夹
    $files = array();
    $size = 0; //初始化大小
    // 字节计算
    $byte_format = function ($size, $dec = 2) {
        $a = array("B", "KB", "MB", "GB", "TB", "PB");
        $pos = 0;
        while ($size >= 1024) {
            $size /= 1024;
            $pos++;
        }
        return round($size, $dec) . " " . $a[$pos];
    };

    //使用匿名函数获取列表信息
    $dirSize = function ($path, &$files, &$size) use (&$dirSize, $byte_format) {
        //如果不是文件，就度是目录了
        if (is_dir($path)) {
            $dp = dir($path);
            while ($file = $dp->read()) {
                if ($file !== "." && $file !== "..") {
                    // 闭包调用自身
                    $dirSize($path . "/" . $file, $files, $size);
                }
            }
            $dp->close();
        }
        if (is_file($path)) {
            $size += filesize($path);
        }
        // 计算大小返回数据
        return $byte_format($size);
    };
    // 返回数据
    return  $dirSize($path, $files, $size);
}


/**
 * 获取指定目录下所有文件名（包括二级）
 * @param string $path 目录路径
 * @return 返回目录下所有文件名
 */
function getFileNameAll($path)
{
    // 初始化文件夹
    $files = array();
    //使用匿名函数获取列表信息
    $dirList = function ($path, &$files) use (&$dirList) {
        //如果不是文件，就度是目录了
        if (is_dir($path)) {
            $dp = dir($path);
            while ($file = $dp->read()) {
                if ($file !== "." && $file !== "..") {
                    // 闭包调用自身
                    $dirList($path . "/" . $file, $files);
                }
            }
            $dp->close();
        }
        if (is_file($path)) {
            $files[] = iconv("GB2312", "UTF-8", $path);
        }
        return $files;
    };
    // 返回数据
    return  $dirList($path, $files);
}

//判断是否是手机
function is_mobile()
{
    $agent = strtolower($_SERVER['HTTP_USER_AGENT']);
    $is_pc = (strpos($agent, 'windows nt')) ? true : false;
    $is_mac = (strpos($agent, 'mac os')) ? true : false;
    $is_iphone = (strpos($agent, 'iphone')) ? true : false;
    $is_android = (strpos($agent, 'android')) ? true : false;
    $is_ipad = (strpos($agent, 'ipad')) ? true : false;

    if ($is_pc) {
        return  false;
    }

    if ($is_mac) {
        return  true;
    }

    if ($is_iphone) {
        return  true;
    }

    if ($is_android) {
        return  true;
    }

    if ($is_ipad) {
        return  true;
    }
}
